package com.dw.service;

import java.util.List;
import java.util.Map;

/**
 * @Description 基础服务接口
 * @Author dw
 * @Date 2019/12/2 19:05
 * @Version 1.0
 **/
public interface BaseService<T> {
    /**
     * 插入表操作：数据库列名集合和属性值集合必须一一对应
     *
     * @param tableName 操作的表名称
     * @param columnList 数据库列名集合
     * @param propertyList 属性值集合
     * @return java.lang.Integer
     */
    Integer insert(String tableName, List<String> columnList, List<String> propertyList);


    /**
     * 根据id删除记录
     *
     * @param idMap id
     * @return java.lang.Integer
     */
    Integer delete(Map<String, String> idMap);


    /**
     * 修改表记录
     *
     * @param tableName 操作的表名称
     * @param columnList 参数集合，列名
     * @param propertyList 参数集合，实体属性
     * @param idMap id
     * @return java.lang.Integer
     */
    Integer update(String tableName, List<String> columnList, List<String> propertyList, Map<String, String> idMap);

    /**
     * 查询单条记录
     *
     * @param paramMap 条件集合 column:数据表类名 property：实体属性名称
     * @return T
     */
    T findByOne(String tableName,Map<String, String> paramMap);

    /**
     * 查询所有
     *
     * @param paramMap 参数集合
     * @param tableName 数据表名称
     * @return java.util.List<T>
     */
    List<T> findAll(String tableName, Map<String, String> paramMap);

    /**
     * 查询总记录条数
     *
     * @param tableName
     * @return java.lang.Integer
     */
    Integer getTotalCount(String tableName);

    /**
     * 分页查询
     *
     * @param tableName  操作的表名称
     * @param limit
     * @param offset
     * @param paramMap
     * @return java.util.List<java.util.Map < java.lang.Object , java.lang.Object>>
     */
    List<Map<Object,Object>> getPageList(String tableName, Integer offset, Integer limit, Map<String, String> paramMap);

}
